package org.nutz.lang.random;

/**
 * @author zozohtnt
 * @author wendal(wendal1985@gmail.com)
 */
public class StringGenerator {

	/**
	 * 
	 * @param max
	 *            必须大于0
	 */
	public StringGenerator(int max) {
		maxLen = max;
		minLen = 1;
	}

	/**
	 * 
	 * @param min
	 *            必须大于0
	 * @param max
	 *            必须不小于min
	 */
	public StringGenerator(int min, int max) {
		maxLen = max;
		minLen = min;
	}

	/**
	 * min length of the string
	 */
	private int maxLen;

	/**
	 * max length of the string
	 */
	private int minLen;

	/**
	 * 
	 * @param min
	 *            必须大于0
	 * @param max
	 *            必须不小于min
	 */
	public void setup(int min, int max) {
		minLen = min;
		maxLen = max;
	}

	/**
	 * 根据设置的max和min的长度,生成随机字符串.
	 * <p/>
	 * 若max或min小于0,则返回null
	 * 
	 * @return 生成的字符串
	 */
	public String next() {
		if (maxLen <= 0 || minLen <= 0 || minLen > maxLen)
			return null;
		char[] buf = new char[R.random(minLen, maxLen)];
		for (int i = 0; i < buf.length; i++)
			buf[i] = CharGenerator.next();
		return new String(buf);
	}

}
